package com.dbf.forum.common.utils;

import com.dbf.forum.common.core.ModelObject;
import com.dbf.forum.common.core.ModelObjectDto;
import com.dbf.forum.common.service.CommonService;
import com.dbf.forum.common.service.CommonServiceImpl;
import com.dbf.forum.core.offre.Offre;
import com.dbf.forum.core.offre.OffreDto;
import com.dbf.forum.core.produit.Produit;
import com.dbf.forum.core.produit.ProduitDto;
import com.dbf.forum.user.model.User;
import com.dbf.forum.user.model.UserDto;

public class CommonHelper extends CommonServiceImpl implements CommonService{
	
	public static  OffreDto populate(Offre offre){
		OffreDto offreDto = new OffreDto();
		offreDto.setId(offre.getId());
		offreDto.setDateOffre(offre.getDateOffre());
		offreDto.setStatut(offre.getStatut());
		offreDto.setAcheteur(populate(offre.getAcheteur()));
		offreDto.setProduitDto(populate(offre.getProduit()));
		return offreDto;
	}
	
	public static ProduitDto populate(Produit produit){
		ProduitDto produitDto = new ProduitDto();
		produitDto.setDescription(produit.getDescription());
		produitDto.setId(produit.getId());
		produitDto.setNom(produit.getNom());
		produitDto.setPrixDepart(produit.getPrixDepart());
		produitDto.setVendeur(populate(produit.getVendeur()));
		return produitDto;
	}
	
	public static UserDto populate(User user){
		UserDto userDto = new UserDto();
		userDto.setEmail(user.getEmail());
		userDto.setName(user.getName());
		userDto.setUsername(user.getUsername());
		return userDto;
	}
	//////////
	public static  Offre populate(OffreDto offreDto){
		Offre offre = new Offre();
		offre.setId(offreDto.getId());
		offre.setDateOffre(offreDto.getDateOffre());
		offre.setStatut(offreDto.getStatut());
		offre.setAcheteur(populate(offreDto.getAcheteur()));
		offre.setProduit(populate(offreDto.getProduitDto()));
		return offre;
	}
	
	public static Produit populate(ProduitDto produitDto){
		Produit produit = new Produit();
		produit.setDescription(produitDto.getDescription());
		produit.setId(produitDto.getId());
		produit.setNom(produitDto.getNom());
		produit.setPrixDepart(produitDto.getPrixDepart());
		produit.setVendeur(populate(produitDto.getVendeur()));
		return produit;
	}
	
	public static User populate(UserDto userDto){
		User user = new User();
		user.setId(userDto.getId());
		user.setEmail(userDto.getEmail());
		user.setName(userDto.getName());
		user.setUsername(userDto.getUsername());
		return user;
	}
	
	public  <T extends ModelObject,K extends ModelObjectDto>   K transform(T t, K k){

//		T modelObject = CommonHelper.populate(()->h);
//		offreDto = CommonHelper.populate(offreById);
		return null;
	}

}
